|
Ada(エイダ)は、強力な言語機能を豊富に持ち、高度な型の体系をもつ、プログラミング言語の一つである。構文はAlgol系である。 史上初のプログラマとされるエイダ・ラブレスの名前にちなんでAdaと命名されているため、ADAと表記するのは誤り。 フリーのコンパイラとしては、GNATなどがある。 ボーイング777や、F-22戦闘機の制御ソフトウェアはAdaによって書かれている。 == 特徴 == 1979年、米国国防総省が信頼性・保守性に優れた、主として組み込みシステム向けの言語を作りたいという意図のもと、国際競争入札を行い4社に発注、各設計仕様書の表紙が赤、青、黄、緑だったことから、そのままそれぞれの言語名称としてRED、BLUE、YELLOW、GREENと呼ばれた。この入札で優勝したのはフランス人チームで、公平を期すため選定時にはGREENと名付けられた。そのような理由から、イメージカラーは緑である。特徴的な要件としては、大規模開発や長期保守性の観点から、 * コーディング効率よりも可読性を重視すること * マクロを有しないこと などがあった。 プログラム言語としての機能としては、 * 強い型検査(コンパイル時および実行時)。属性によって型に関する情報が取得できる。 * 複雑な型を持つ定数。 * 手続き・関数・演算子の多重定義。 * プラグマを使った処理系依存の機能の指定。 * パッケージ(後にC++がnamespaceとして追従) * 汎用プログラミング(後にC++がテンプレートとして追従) * 並行プログラミング(タスク、entry/accept/select文など) * 例外 など、当時としては先進的な機能〔先進的ということは、言い換えれば「こなれていない」ということであり、兵器のようなシステムでは冒険的過ぎると言えなくもない。〕を意欲的に取り入れたため、米国国防総省は大きなものとなってしまった言語仕様をまとめるのに、初版のStrawman(わら男、案山子の意味もある)からWoodenman(木男)、Tinman(ブリキ男、前述の案山子とともに『オズの魔法使い』に出てくる)、Ironman(鉄男)、最終版のSteelman(鋼鉄男)に至るまで5つのバージョンに分けて策定を行った(近年では廃れたが、当時、既に歴史あるCobolやFortranなどにおいて時代に対応するためなどの相次ぐ機能追加で大きくなった仕様のレベル分けなどはよく行われていたことであり、Adaに限った話ではない)。 言語仕様の大きさや厳密さ(ここでは、たとえばC言語の標準規格には豊富にある「未定義」や「未規定」がわずかだ、という意味である。C言語では、そういったケース(多くはコーナーケース)への対処が必須ではないので、省略しても標準規格には反さないわけだが、「厳密」な仕様の下では省略できない)のため、当時のコンピュータが持っていた資源では、処理系の実装にミニコンやワークステーション程度を必要とし、16ビットパソコンには市場性といった事情もあり実装はほとんどない(もっとも、intが32ビット等、Unixと十分な互換性があるようなC言語の処理系も16ビットパソコンにはたいして無かったのだから、そう違わない)。実際にはAdaは、大企業において、主として信頼性や保守性を要求されるシステムの開発でのみ普及した。というよりも、実際にどの程度徹底されたかは不明だが、策定の主体であった米国国防総省が発注するようなもの、即ち兵器の開発において条件とされたと言われる。 この時期としては先進的であった、その他の特徴としては、 ; コンパイラの認定制度 : 仕様準拠か否かの検証プログラムキットが規定され、合格しない処理系は「Adaコンパイラ」と称することができない。 ; 自動ビルド : 複数モジュールの依存性から、再コンパイルの要否を自動判定する(いわゆるMakefileの記述が不要) などがあげられる。 策定作業中に仕様が大きくなっていった際には、仕様が高度に巨大化した言語が、兵器のように高度な信頼性を要求される分野に、国防総省の「お墨付き」として使用されることを危ぶむ向きもあった。たとえばアントニー・ホーアは1980年度のチューリング賞受賞者だが〔http://amturing.acm.org/award_winners/hoare_4622167.cfm〕、その受賞記念講演(Turing Award Lecture)''The Emperor's Old Clothes''において、自身のALGOL 68(:en:ALGOL 68、やはり仕様の巨大化で知られる)に関する経験などに触れたうえで、Adaへの憂慮で締めくくっている(この講演は、二通りのソフトウェアの設計構築法について述べた ''One way is to make it so simple that there are obviously no deficiencies and the other way is to make it so complicated that there are no obvious deficiencies.''・「ひとつめの方法はあきらかに欠陥が無いようにso simpleにするというもので、もうひとつの方法はあきらかな欠陥が無いようにso complicatedにするというものである」という文章でも知られる)。 抄文引用元・出典: フリー百科事典『 ウィキペディア(Wikipedia)』 ■ウィキペディアで「Ada」の詳細全文を読む 英語版ウィキペディアに対照対訳語「 Ada (programming language) 」があります。 スポンサード リンク
|